#pragma once

#include "..\..\Objects\display\DisplayObject.h"
#include "..\..\Objects\display\DisplayObjectContainer.h"
#include "..\..\Objects\display\components\Shape.h"

using namespace D2;

class DrawTest : public DisplayObjectContainer {
public:
	DrawTest();
	~DrawTest();

};

class CircleDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateCircleShape();

class RectangleDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateRectangleShape();

class LineDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateLineShape();

class PolygonDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreatePolygonShape();

class BezierDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateBezierShape();

class ImageDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateImageShape();

class TextDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateTextShape();

class LinearGradientDraw : public DisplayObject {
public:
	virtual bool Draw(Direct2DContext* ctx, D2D1::Matrix3x2F* mtx = 0);

};

static Shape* CreateLinearGradientShape();

